// pages/pay/index.js
import { myLogin } from "../../utils/util.js";
import { request } from "../../request/request.js"
Page({

    data: {
        //购物车商品数据,
        cart: [],
        //商品的总价格 勾选才统计
        totalPrice: 0,
        //商品的总数量 勾选才统计
        totalNum: 0,
        //token信息(支付功能需要用到)  userInfo
        token: "",
        //收货地址
        address: {}
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {

    },
    //页面显示就触发的函数  
    onShow() {
        //获取缓存中的用户信息
        let token = wx.getStorageSync("token") || "";
        //获取缓存中的地址数据
        let address = wx.getStorageSync("address");
        //获取缓存中的购物车商品数据
        let cart = wx.getStorageSync("cart") || [];
        //拼接数据
        if (address.cityName) {
            address.all = address.cityName + address.countyName + address.detailInfo;
        }
        //现在是商品支付页面,要对没有选中的商品进行过滤处理
        cart = cart.filter(item => item.checked);
        //保存地址信息  保存购物车商品信息
        this.setData({
            address,
            cart,
            token
        });
        //更新总价格和总数量
        this.updataTotal();
    },
    //更新总商品价格和数量的函数
    updataTotal() {
        let cart = this.data.cart;
        let totalNum = 0;
        let totalPrice = 0;
        cart.forEach((element, index) => {
            //现在在支付页面,商品肯定是被选中的 不用进行if判断了
            totalNum += element.num;
            totalPrice += element.goods_price * element.num;
        });
        this.setData({
            totalNum,
            totalPrice
        });
    },
    //点击支付功能
    async handleOderPay() {
        //创建订单了兄弟们
        //用户支付功能
        //判断token值是否存在
        let token = this.data.token;
        if (token != "") { //存在token
            try {
                //获取请求头
                let header = { Authorization: token };
                //获取请求体
                let order_price = this.data.totalPrice;
                let consignee_addr = this.data.address.all;
                let goods = [];
                let cart = this.data.cart;
                cart.forEach((element) => {
                    goods.push({
                        goods_id: element.goods_id,
                        goods_number: element.num,
                        goods_price: element.goods_price
                    })
                });
                // 封装请求体
                let data = {
                    order_price,
                    consignee_addr,
                    goods
                };
                //发送创建订单的请求 并获取订单号
                let order_number = await request({ url: "/my/orders/create", method: "POST", data, header });
                //根据 订单号获取支付参数  ,这些支付参数是wx-requestPayment 要求的参数 
                let { pay } = await request({ url: "/my/orders/req_unifiedorder", method: "POST", data: { order_number }, header });
                //调起wx支付api
                let ret = await wx.requestPayment({
                    ...pay
                });
                //默认支付成功,我们删除购物车中已经支付的商品
                //要重新从本地获取商品  原本的cart是处理过的
                let newCart = wx.getStorageSync("cart");
                newCart = newCart.filter(v => !v.checked);
                //保存到缓存
                wx.setStorageSync("cart", newCart);
                //默认支付成功了 我们跳转到订单页面
                wx.navigateTo({
                    url: '/pages/order/index'
                });

            } catch (error) {
                console.log(error);
            }

        } else { //不存在token
            wx.showToast({
                title: '用户未登录或未授权',
                duration: 1500,
                mask: true,
            });

        }
        //需要获取用户信息
    },

    //按钮获取用户信息
    async handleGetUserInfo(e) {
        // console.log(e);
        //获取用户信息
        const { encryptedData, rawData, iv, signature } = e.detail;
        let { code } = await myLogin();
        //获取小程序登录成功后的code值
        let userInfo = { encryptedData, rawData, iv, signature, code };
        // console.log(userInfo);
        //发送请求获取token  这里我们没有企业账号  所以不行
        // let { token } = await request({ url: "/users/wxlogin", data: userInfo, method: "POST" })
        // console.log(token);
        wx.setStorageSync("token", "bearer fhaskldjlskdjfldskjkafjlkasdjadjf");


    }


})